package cn.larry.demo.domain;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.beans.PropertyEditor;
import java.beans.SimpleBeanInfo;

import org.springframework.beans.propertyeditors.CustomNumberEditor;

/**
 * BeanInfo可以为相关的JavaBean属性注册editor。 -- 问题是，为毛没看到调用的地方啊！！！
 * 
 * 关于BeanInfo，需要参考JavaBean specs。
 * 
 * @author LarryZeal
 *
 */
public class PersonBeanInfo extends SimpleBeanInfo {
	
	// PropertyDescriptor，就是描述bean的一个property！
	@Override
	public PropertyDescriptor[] getPropertyDescriptors() {
		try {
			final PropertyEditor numberPE = new CustomNumberEditor(Integer.class, true);
			//匿名内部类之匿名子类，重写方法用。
			PropertyDescriptor ageDescriptor = new PropertyDescriptor("age", Person.class) {
				// 创建PropertyEditor，问题是，为毛？谁会用到吗？
				public PropertyEditor createPropertyEditor(Object bean) {
					System.out.println("~~~~~~~~~~~~~~~~~~~~PersonBeanInfo~~~~~~~~~~~~~~~~~~~~");
					return numberPE;
				};
			};
			
			return new PropertyDescriptor[] { ageDescriptor }; //返回一组PropertyDescriptor。
		} catch (IntrospectionException ex) {
			throw new Error(ex.toString());
		}
	}
	
}
